//package com.lry.xml;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.poi.hssf.usermodel.HSSFDateUtil;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
//import org.apache.poi.ss.usermodel.Cell;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.ss.usermodel.Workbook;
//import org.apache.poi.xssf.usermodel.XSSFCell;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.text.DecimalFormat;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.List;
//
//public class ExcelReaderUtil {
//    // 默认单元格内容为数字时格式
//    private static DecimalFormat df = new DecimalFormat("0");
//    // 默认单元格格式化日期字符串
//    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
//
//    /**
//     * 读取Excel文件，支持2007和2003两种版本
//     * 去掉空行，空单元格对应"",浮点数原样输出
//     *
//     * @param inputStream  输入流
//     * @param containTitle 是否包含表头
//     * @return
//     * @throws IOException List<List<Object>>
//     */
//    @SuppressWarnings("deprecation")
//    public static List<List<ExcelMode>> readExcel(InputStream inputStream, boolean isExcel2007, boolean containTitle) throws IOException {
//        List<List<ExcelMode>> allSheetResult = new ArrayList<>();
//        try {
//            //初始化Workbook对象
//            Workbook wb = null;
//            if (isExcel2007) {
//                wb = new XSSFWorkbook(inputStream);
//            } else {
//                wb = new HSSFWorkbook(inputStream);
//            }
//
//            //读取标题行，获取列数
////            Sheet sheet = wb.getSheetAt(0);
//            //ii表示遍历所有sheet
//            for (int ii = 0; ii < wb.getNumberOfSheets(); ++ii) {
//                Sheet sheet = wb.getSheetAt(ii);
//                //第一列开始的行标
//                int firstRowNum = sheet.getFirstRowNum();
//                int lastRowNum = sheet.getLastRowNum();
//                Row row = sheet.getRow(firstRowNum);
//                //表头列数
//                int firstCellNum = row.getFirstCellNum();
//                int lastCellNum = row.getLastCellNum();
//
//                //遍历数据表,i是游标，要将有数据的读完，中间没数据的行也加入
//                int i = firstRowNum;
//                if (!containTitle) {
//                    i = firstRowNum + 1;
//                }
//                //i表示从第一行到最后一行
//                for (; i < lastRowNum + 1; i++) {
//                    //定位到第i行
//                    row = sheet.getRow(i);
//                    //一行数据
//                    List<Object> colList = new ArrayList<Object>();
//                    if (row == null) {
//                        continue;
//                    }
//                    boolean allBlank = true;
//                    //j从第一列到最后一列
//                    for (int j = firstCellNum; j < lastCellNum; j++) {
//                        //定位到第i行第j列
//                        Cell cell = row.getCell(j);
//                        Object value = "";
//                        if (cell == null) {
//                            colList.add(value);
//                            continue;
//                        }
//                        switch (cell.getCellType()) {
//                            case XSSFCell.CELL_TYPE_STRING:
//                                value = cell.getStringCellValue();
//                                break;
//                            case XSSFCell.CELL_TYPE_NUMERIC:
//                                if ("@".equals(cell.getCellStyle().getDataFormatString())) {
//                                    value = df.format(cell.getNumericCellValue());
//                                } else if ("General".equals(cell.getCellStyle().getDataFormatString())) {
//                                    double num = cell.getNumericCellValue();
//                                    if (isInteger(num)) {
//                                        value = df.format(cell.getNumericCellValue());
//                                    } else {
//                                        value = num;
//                                    }
//                                } else {
//                                    value = sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
//                                }
//                                break;
//                            case XSSFCell.CELL_TYPE_BOOLEAN:
//                                value = Boolean.valueOf(cell.getBooleanCellValue());
//                                break;
//                            case XSSFCell.CELL_TYPE_BLANK:
//                                value = "";
//                                break;
//                            default:
//                                value = cell.toString();
//                        }// end switch
//                        if (StringUtils.isNotBlank(value.toString())) {
//                            allBlank = false;
//                        }
//                        colList.add(value);
//                    } // end for j
//                    //当前行有一个非空就add进去
//                    if (!allBlank) {
//                        ExcelRow excelRow = new ExcelRow();
//                        excelRow.setRow(i + 1);
//                        excelRow.setDatas(colList);
//                        rowList.add(excelRow);
//                    }
//                }
//            } // end for i
//            wb.close();
//        } catch (OfficeXmlFileException e) {
//            throw new IOException("文件后缀与实际文件类型不符", e);
//        }
//        return rowList;
//    }
//
//    //判断整数（int）
//    private static boolean isInteger(double value) {
//        if (value % 1 == 0) {// 是这个整数，小数点后面是0
//            return true;
//        } else {//不是整数，小数点后面不是0
//            return false;
//        }
//    }
//}